# -*- coding: utf-8 -*-
import json
import openai
from openai.embeddings_utils import get_embedding, cosine_similarity

class GPTCall(object):
    def __init__(self):
        self.openai = self.init_openai()

    def init_openai(self):
        openai.api_type = "azure"
        openai.api_base = "https://kykgpt.openai.azure.com"
        openai.api_version = "2023-06-01-preview"
        openai.api_key = "5fa76d1efe7842fbb9310f93a1b9b93f"
        return openai

    def chatgpt_azure(self,messages):
        response = openai.ChatCompletion.create(
            engine="kykgpt",
            messages=messages,
            temperature=0.5,
            max_tokens=4096,
            # top_p=0.95,
            frequency_penalty=0,
            presence_penalty=0,
            stop=None)
        r = response['choices'][0]['message']['content'].strip()
        return r


    def chatgpt_azure_embeding(self,messages):
        response = openai.Embedding.create(
            engine="kykembedding",
            input=messages)
        # 获取总的 token 数量
        total_tokens = response['usage']['total_tokens']
        print(f"Total tokens used: {total_tokens}")
        r = response['data'][0]['embedding']
        return r

    def other_azure_embeding(self,messages):
        embed_data = get_embedding(messages, engine='kykembedding')
        print(embed_data)
        return embed_data


if __name__ == '__main__':
    obj = GPTCall()
    # text = obj.get_video_context("星巴克的焦糖玛奇朵有什么特别")
    # print(text)
    res = "K8S是一种开源的容器编排平台，它的全称是Kubernetes。它能够自动化地部署、扩展和管理容器化应用程序，使得应用程序能够更快地运行、更可靠地运行。K8S的主要目的是让开发人员能够更专注于应用程序的开发，而不是担心应用程序的部署和管理。K8S的核心理念是将应用程序和基础设施分离开来，使得应用程序能够更加灵活地运行在不同的环境中。K8S的优势在于它可以自动化地管理容器的生命周期，包括容器的部署、扩展、监控和故障恢复。K8S的使用也越来越广泛，它已经成为了容器编排领域的事实标准。"
    # print(res)
    #text = "客一客自研营销科技平台软件产品，为泛金融类ToB场景方提供一站式的SaaS化服务方案。包括提供全国性银行 / 持牌机构金融产品申请通道供给、一站式的移动互联网金融服务工具。2020~2021年间累计交易信贷业务规模超过222亿，截至2023年3月累计交易信贷业务规模已超454亿。依靠S2B2C的平台模式，累计帮助全国超过100万中小微企业获得融资贷款。解决资金与经营生产难题，助力金融服务最后一公里。"
    # input_data = [
    #     "montreal,canada,column",
    #     "montr_al,bank_of_montreal_museum,fund",
    #     "website,computer,data",
    #     "street_photography,london,concrete",
    #     "usa,piedmont,missouri",
    #     "architecture,building,business",
    #     "new_york,united_states,neon",
    #     "orange,yellow,color",
    #     "banking,personal_banking,blue",
    #     "bank,deutschland,rosenheim"
    # ]

    #text1 = '深圳市客一客信息科技有限公司，成立于2015年，是一家专注于移动互联网领域的技术创新公司。我们致力于为客户提供高质量、高效率的信息化解决方案，涵盖了移动应用开发、互联网产品设计、软件定制开发等领域。公司拥有一支技术精湛、经验丰富的研发团队，为客户提供全方位的技术支持和服务。我们坚持以客户需求为导向，不断创新、追求卓越，为客户创造价值，成为行业领先的信息科技服务提供商。'
    input_embedding = obj.chatgpt_azure_embeding(res)
    print(input_embedding)
    #
    # embeddings_data = []
    # similarity_result = []
    # for i in range(len(input_data)):
    #     data = obj.chatgpt_azure_embeding(input_data[i])
    #     embeddings_data.append([i, input_data[i], data])
    #     # # print(data)
    #
    #     result = cosine_similarity(data, input_embedding)
    #     print('%s与字幕的相似度'%input_data[i] , result)
    #     similarity_result.append(result)
    # #similarity_result结果排序，从大到小
    # similarity_result.sort(reverse=True)
    # print('similarity_result',similarity_result)
    #
